#ifndef __PROXY_H__
#define __PROXY_H__
#include <iostream>
#include <string>

class Subject
{
public:
    Subject() = default;
    ~Subject()=default;
    virtual void buy() = 0;
};

class RealSubject :public Subject
{
public:
    RealSubject()=default;
    ~RealSubject()=default;
    virtual void buy() override;
};

class Proxy :public Subject
{
private:
    Subject* m_realSubject;
public:
    Proxy(Subject* subject):m_realSubject(subject){}
    ~Proxy()=default;
    virtual void buy() override;
};
 


#endif